/*

  The contents of this file are subject to the Mozilla Public License Version
  1.1 (the "License"); you may not use this file except in compliance with
  the License. You may obtain a copy of the License at 
  
           http://www.mozilla.org/MPL/ 
  
  Software distributed under the License is distributed on an "AS IS" basis,
  WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
  for the specific language governing rights and limitations under the License. 
  
  The Original Code is Indigo framework applicatif.
  
  The Initial Developer of the Original Code is
  Olivier Bugalotto (aka Iteratif) <olivier.bugalotto@iteratif.net>.
  Portions created by the Initial Developer are Copyright (C) 2004-2008
  the Initial Developer. All Rights Reserved.
  
  Contributor(s) :
  
*/
package indigo.collections
{
	/**
	 * L'interface <code>IList</code> propose une API pour construire des listes d'objets non generiques.
	 *
	 * @see ArrayList 
	 */
	public interface IList extends ICollection
	{
		/**
		 * Ajoute un element a la <code>IList</code> 
		 * @param item	Element a ajouter
		 * 
		 */
		function add(item:Object):uint;
		/**
		 * Supprime tous les elements de <code>IList</code> 
		 * 
		 */
		function clear():void;
		/**
		 * Permet de savoie si <code>IList</code> contient un element specifique
		 *  
		 * @param item Element specifique
		 * @return 
		 * 
		 */
		function contains(item:Object):Boolean;
		/**
		 * Obtenir l'index de l'element specifie 
		 * @param item
		 * @return 
		 * 
		 */
		function indexOf(item:Object):int;
		/**
		 * Inserer un element dans <code>IList</code> a l'index specifie 
		 * @param index
		 * @param item
		 * 
		 */
		function insert(index:int, item:Object):void;
		/**
		 * Supprime un element specifie 
		 * @param item
		 * 
		 */
		function remove(item:Object):Object;
		/**
		 * Supprime un element depuis son index dans <code>IList</code>
		 * @param index
		 * 
		 */
		function removeAt(index:int):Object;
		/**
		 * Obtenir l'element par son index dans <code>IList</code> 
		 * @param index
		 * @return 
		 * 
		 */		
		function getItemAt(index:int):Object;
	}
}